Instant messaging is a form of communication that enables real-time interaction between users over a network. This definition is broad: primitive instant messaging platforms allow two users to communicate using text, while more advanced services allow audio and visual communication between larger numbers of users. In addition, relatively recent social networking services such as Twitter and Facebook can be thought of within the context of instant messaging.

The aim of the project was to develop a rudimentary instant messaging system in Java, in the process giving us experience in designing and implementing a networked system. A number of instant messaging systems already exist, and the aim of the project was not to develop a system which competes with these. Indeed, the majority of these systems include features which go beyond the scope of what we were attempting to achieve.

We chose to adopt the client-server architecture, whereby a client connects to a server to send and receive messages. The initial project proposal requires that the server, theoretically at least, supports any number of clients. We have designed and implemented a protocol by which a given client will communicate with a server, and this dissertation outlines the process by which the protocol was developed, and provides a specification of the protocol.

In addition to the practical experience gained in developing a networked system, the project also aimed to improve our interpersonal and teamwork skills. We have not worked on a project of this scale before as part of a team, and in doing so, we learned how to work in a structured and organised way.

While the team had no previous experience in developing an instant messaging service, we have each had different experiences in using these services. In that regard, the project was interesting in that it presented an opportunity for us to develop our own service that corrected some of the deficiencies that we believed to exist within the services that we had used. In addition, it also gave us an insight into the workings of services that we have used frequently.

The target audience of this dissertation are those within the fields of Computing Science or Software Engineering who are interested in the design and development of protocols, and the design and implementation of networked systems. The text does not assume more than basic prior knowledge of networked systems.

This dissertation details the process by which we developed our requirements from the initial project proposal in chapter 2. Chapter 3 details the overall architecture of the system, and how this architecture was selected. Chapters 4 to 6 detail the design and implementation processes associated with the protocol, client, and server, respectively. In chapter 7, we discuss what problems we encountered in integrating these discrete components to form our instant messaging system. We conclude by critically reflecting on the project as a whole. As appendices, we have included the full protocol specification, notes on our team structure and organisation, and a summary of the individual contributions made to the project.
